package com.zmn.oms.model.dto.work.modify;

import com.zmn.oms.common.constant.OrderConsts;
import com.zmn.oms.common.dto.OmsStatusOperator;
import com.zmn.oms.model.entity.work.OrderWork;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 类描述：派单
 *
 * @author liuying
 * @date 2018/12/10 16:41
 */
@Data
@ToString(callSuper = true)
public class OrderDistributeDTO extends OmsStatusOperator {
    /**
     * 工程师ID
     */
    @NotNull
    private Integer masterId;

    /**
     * 工程师名称
     */
    private String masterName;

    /**
     * 工程师分组名称
     */
    private String masterGroupName;

    /**
     * 工程师手机号
     */
    private String masterPhone;

    /**
     * 是否自动派单
     */
    private boolean autoDistribute = false;

    /**
     * 派单方式日志文案
     */
    private String distributeTypeText;

    /**
     * 派单关联工单日志文案
     */
    private String distributeRelateWorkText;

    /**
     * 自动派单次数
     */
    private Integer autoDistributeCount;

    /**
     * 服务商不检查订单类型的原因ID 天猫
     *  1、该区域无VIP工人/已离职
     *  2、该区域VIP工人请假
     *  3、偏远区域无固定工人
     *  4、该区域VIP工人容量已满
     */
    private Long stopOrderTypeCheckReason;

    /**
     * 关联多师傅日志文案(删除学徒多工程师：xx、xx；添加学徒工程师：xx、xx)
     */
    private String relateMultiMasterText;

    private OrderWork dbOrderWork;

    /**
     * 派单规则
     */
    private Integer distributeRule;

    /**
     * 派单路径
     */
    private Integer distributeWay;

    /**
     * 派单入口
     */
    private Integer distributeEntry;

    /**
     * 派单时间
     */
    private Date distributeDate;

    /**
     * 服务项类型，目前仅支持两种类型： 1.工单服务项 2.故障服务项
     * 若值不等于2，则均作为值等于1处理
     * @see OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    private Integer servItemType;

    /**
     * 一口价
     */
    private Integer finalPrice;

    /**
     * 子公司id
     */
    private Integer companyId;

    /**
     * 子公司名称（网格化派单记录日志）
     */
    private String companyName;

    /**
     * 服务公司名称（网格化派单记录日志）
     */
    private String manageCompanyName;

    /**
     * 网格ID(网格派单记录日志)
     */
    private Integer gridId;

    /**
     * 网格名称(网格派单记录日志)
     */
    private String gridName;

    /**
     * 抢单类型：1指派，2抢单
     */
    private Integer grabType;

    /**
     * 抢单方式，1正常抢单，2无网格抢单
     */
    private Integer grabWay;

    /**
     * 是否强制派单，2强制
     */
    private Integer mandatory;

    /**
     * 工作网格类型：1主网格，2副网格
     */
    private Integer workspaceType;

    /**
     * 改派缘由ID
     */
    private Integer distributeReasonId;

    /**
     * 改派缘由
     */
    private String distributeReason;

    /**
     * 原工程师ID 改派前工程师id
     */
    private Integer originalMasterId;

    /**
     * 责任归属：1：原工程师 2：当前工程师
     */
    private Integer liableType;

    /**
     * 库存类型
     */
    private Integer stockType;

    /**
     * 是否录单预派
     */
    private boolean preDistribute;

    /**
     * 派单网格：1网格外，2网格内，3跨网格
     */
    private Integer distributeGrid;

    /**
     * 工程师中心点距离
     */
    private Double orderCenterDistance;

    /**
     * 操作类型
     * @see OrderConsts.ORDER_OP_TYPE_DISTRIBUTE_NEW
     */
    private Integer operateType;
}
